﻿namespace System;
/// <summary>
/// 
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class CompositeSpecification<T> : Specification<T>, ICompositeSpecification<T>
{
    #region Private Fields
    private readonly ISpecification<T> left;
    private readonly ISpecification<T> right;
    #endregion
    #region Ctor
    /// <summary>
    /// 
    /// </summary>
    /// <param name="left"></param>
    /// <param name="right"></param>
    public CompositeSpecification(ISpecification<T> left, ISpecification<T> right)
    {
        this.left = left;
        this.right = right;
    }
    #endregion
    #region ICompositeSpecification Members
    /// <summary>
    /// 
    /// </summary>
    public ISpecification<T> Left => this.left;
    /// <summary>
    /// 
    /// </summary>
    public ISpecification<T> Right => this.right;
    #endregion
}
